1
16進数表記と仮想アドレス空間
AI031Lesson 2
00:00

ここでは マシンレベルのプログラム視点に移行します。ここでハードウェアの複雑さは、構造化された 仮想アドレス空間に抽象化されます。この視点では、メモリは変数の集まりではなく、8ビットのブロックからなる巨大で連続した配列です。 バイト。ワードサイズが $w$ ビットのマシンの場合、これらのアドレスは $0$ から $2^w - 1$ の範囲に及び、プログラムの到達可能範囲を定義します。

1. 16の力

バイナリは回路の言語ですが、 16進数表記 はプログラマーの言語です。なぜなら $16 = 2^4$ であるため、1つの16進数桁(0~F)は正確に4ビットのニブルにマッピングされるからです。これにより、1バイトの値をちょうど2桁で簡潔に表現できます(例: 0xFF)。この省略表現は、 マシンコード および アセンブリコードを読む上で不可欠です。たとえば命令 4004dc: 48 03 47 28のようなものです。

図2.2:16進数・2進数・10進数の対応表16進数10進数2進数01...9ABCDEF01...910111213141500000001...1001101010111100110111101111 ルール:10進数 x を16進数に変換するには、繰り返し x = q ⋅ 16 + r

2. 精度と演算

整数型データを操作する中で、私たちは 整数型データに直面します。 ブール環 および 2の補数 論理、そして リトルエンディアン ストレージ、 整数オーバーフロー、および 単精度 浮動小数点における細かいニュアンス、特に 無限大 ($+\infty$) および NaN任意サイズの演算 が存在する領域です。これらのビットパターンを理解することは、

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>